import { computed, Ref, ref } from 'vue'

import { defineStore } from 'pinia'

import { store } from '@/store'

import { getLocale as _getLocale, setLocale as _setLocale } from '@/utils/auth'

import type { LocaleType } from '@/locales/config'
import { localeMap } from '@/locales/config'

export const useLocaleStore = defineStore('locale', () => {
  const locale: Ref<LocaleType> = ref(_getLocale() || localeMap.zh_CN)

  const getLocale = computed(() => locale.value ?? localeMap.zh_CN)

  const setLocale = (_locale: LocaleType) => {
    locale.value = _locale
    _setLocale(_locale)
  }

  return {
    locale,
    getLocale,
    setLocale,
  }
})

export function useLocaleStoreWithOut() {
  return useLocaleStore(store)
}
